Example #1
0
            qa_db_user_set_flag($userid, QA_USER_FLAGS_USER_BLOCKED, true);
            qa_report_event('u_block', $loginuserid, qa_get_logged_in_handle(), qa_cookie_get(), array('userid' => $userid, 'handle' => $useraccount['handle']));
            qa_redirect(qa_request());
        }
        if (qa_clicked('dounblock')) {
            require_once QA_INCLUDE_DIR . 'qa-db-users.php';
            qa_db_user_set_flag($userid, QA_USER_FLAGS_USER_BLOCKED, false);
            qa_report_event('u_unblock', $loginuserid, qa_get_logged_in_handle(), qa_cookie_get(), array('userid' => $userid, 'handle' => $useraccount['handle']));
            qa_redirect(qa_request());
        }
        if (qa_clicked('dohideall') && !qa_user_permit_error('permit_hide_show')) {
            require_once QA_INCLUDE_DIR . 'qa-db-admin.php';
            require_once QA_INCLUDE_DIR . 'qa-app-posts.php';
            $postids = qa_db_get_user_visible_postids($userid);
            foreach ($postids as $postid) {
                qa_post_set_hidden($postid, true, $loginuserid);
            }
            qa_redirect(qa_request());
        }
        if (qa_clicked('dodelete') && $loginlevel >= QA_USER_LEVEL_ADMIN) {
            require_once QA_INCLUDE_DIR . 'qa-app-users-edit.php';
            qa_delete_user($userid);
            qa_report_event('u_delete', $loginuserid, qa_get_logged_in_handle(), qa_cookie_get(), array('userid' => $userid, 'handle' => $useraccount['handle']));
            qa_redirect('users');
        }
    }
}
//	Process bonus setting button
if ($loginlevel >= QA_USER_LEVEL_ADMIN && qa_clicked('dosetbonus')) {
    require_once QA_INCLUDE_DIR . 'qa-db-points.php';
    qa_db_points_set_bonus($userid, (int) qa_post_text('bonus'));
Example #2
0
function qa_admin_single_click($postid, $action)
{
    require_once QA_INCLUDE_DIR . 'qa-app-posts.php';
    $post = qa_post_get_full($postid);
    if (isset($post)) {
        $userid = qa_get_logged_in_userid();
        $queued = substr($post['type'], 1) == '_QUEUED';
        switch ($action) {
            case 'approve':
                if ($queued && !qa_user_permit_error('permit_moderate')) {
                    qa_post_set_hidden($postid, false, $userid);
                    return true;
                }
                break;
            case 'reject':
                if ($queued && !qa_user_permit_error('permit_moderate')) {
                    qa_post_set_hidden($postid, true, $userid);
                    return true;
                }
                break;
            case 'hide':
                if (!$queued && !qa_user_permit_error('permit_hide_show')) {
                    qa_post_set_hidden($postid, true, $userid);
                    return true;
                }
                break;
            case 'reshow':
                if ($post['hidden'] && !qa_user_permit_error('permit_hide_show')) {
                    qa_post_set_hidden($postid, false, $userid);
                    return true;
                }
                break;
            case 'delete':
                if ($post['hidden'] && !qa_user_permit_error('permit_delete_hidden')) {
                    qa_post_delete($postid);
                    return true;
                }
                break;
            case 'clearflags':
                require_once QA_INCLUDE_DIR . 'qa-app-votes.php';
                if (!qa_user_permit_error('permit_hide_show')) {
                    qa_flags_clear_all($post, $userid, qa_get_logged_in_handle(), null);
                    return true;
                }
                break;
        }
    }
    return false;
}
Example #3
0
function qa_post_delete($postid)
{
    $oldpost = qa_post_get_full($postid, 'QAC');
    if (!$oldpost['hidden']) {
        qa_post_set_hidden($postid, true, null);
        $oldpost = qa_post_get_full($postid, 'QAC');
    }
    switch ($oldpost['basetype']) {
        case 'Q':
            $answers = qa_post_get_question_answers($postid);
            $commentsfollows = qa_post_get_question_commentsfollows($postid);
            $closepost = qa_post_get_question_closepost($postid);
            if (count($answers) || count($commentsfollows)) {
                qa_fatal_error('Could not delete question ID due to dependents: ' . $postid);
            }
            qa_question_delete($oldpost, null, null, null, $closepost);
            break;
        case 'A':
            $question = qa_post_get_full($oldpost['parentid'], 'Q');
            $commentsfollows = qa_post_get_answer_commentsfollows($postid);
            if (count($commentsfollows)) {
                qa_fatal_error('Could not delete answer ID due to dependents: ' . $postid);
            }
            qa_answer_delete($oldpost, $question, null, null, null);
            break;
        case 'C':
            $parent = qa_post_get_full($oldpost['parentid'], 'QA');
            $question = qa_post_parent_to_question($parent);
            qa_comment_delete($oldpost, $question, $parent, null, null, null);
            break;
    }
}
            foreach ($blockipclauses as $key => $blockipclause) {
                if (qa_block_ip_match($ip, $blockipclause)) {
                    unset($blockipclauses[$key]);
                }
            }
            qa_set_option('block_ips_write', implode(' , ', $blockipclauses));
            qa_report_event('ip_unblock', $userid, qa_get_logged_in_handle(), qa_cookie_get(), array('ip' => $ip));
            qa_redirect(qa_request());
        }
        if (qa_clicked('dohideall') && !qa_user_maximum_permit_error('permit_hide_show')) {
            // allow moderator in one category to hide posts across all categories if they are identified via IP page
            require_once QA_INCLUDE_DIR . 'qa-db-admin.php';
            require_once QA_INCLUDE_DIR . 'qa-app-posts.php';
            $postids = qa_db_get_ip_visible_postids($ip);
            foreach ($postids as $postid) {
                qa_post_set_hidden($postid, true, $userid);
            }
            qa_redirect(qa_request());
        }
    }
}
//	Combine sets of questions and get information for users
$questions = qa_any_sort_by_date(array_merge($qs, $qs_queued, $qs_hidden, $a_qs, $a_queued_qs, $a_hidden_qs, $c_qs, $c_queued_qs, $c_hidden_qs, $edit_qs));
$usershtml = qa_userids_handles_html(qa_any_get_userids_handles($questions));
$hostname = gethostbyaddr($ip);
//	Prepare content for theme
$qa_content = qa_content_prepare();
$qa_content['title'] = qa_lang_html_sub('main/ip_address_x', qa_html($ip));
$qa_content['error'] = @$pageerror;
$qa_content['form'] = array('tags' => 'method="post" action="' . qa_self_html() . '"', 'style' => 'wide', 'fields' => array('host' => array('type' => 'static', 'label' => qa_lang_html('misc/host_name'), 'value' => qa_html($hostname))), 'hidden' => array('code' => qa_get_form_security_code('ip-' . $ip)));
if ($blockable) {
Example #5
0
function qa_admin_single_click($entityid, $action)
{
    $userid = qa_get_logged_in_userid();
    if (!QA_FINAL_EXTERNAL_USERS && ($action == 'userapprove' || $action == 'userblock')) {
        // approve/block moderated users
        require_once QA_INCLUDE_DIR . 'db/selects.php';
        $useraccount = qa_db_select_with_pending(qa_db_user_account_selectspec($entityid, true));
        if (isset($useraccount) && qa_get_logged_in_level() >= QA_USER_LEVEL_MODERATOR) {
            switch ($action) {
                case 'userapprove':
                    if ($useraccount['level'] <= QA_USER_LEVEL_APPROVED) {
                        // don't demote higher level users
                        require_once QA_INCLUDE_DIR . 'app/users-edit.php';
                        qa_set_user_level($useraccount['userid'], $useraccount['handle'], QA_USER_LEVEL_APPROVED, $useraccount['level']);
                        return true;
                    }
                    break;
                case 'userblock':
                    require_once QA_INCLUDE_DIR . 'app/users-edit.php';
                    qa_set_user_blocked($useraccount['userid'], $useraccount['handle'], true);
                    return true;
                    break;
            }
        }
    } else {
        // something to do with a post
        require_once QA_INCLUDE_DIR . 'app/posts.php';
        $post = qa_post_get_full($entityid);
        if (isset($post)) {
            $queued = substr($post['type'], 1) == '_QUEUED';
            switch ($action) {
                case 'approve':
                    if ($queued && !qa_user_post_permit_error('permit_moderate', $post)) {
                        qa_post_set_hidden($entityid, false, $userid);
                        return true;
                    }
                    break;
                case 'reject':
                    if ($queued && !qa_user_post_permit_error('permit_moderate', $post)) {
                        qa_post_set_hidden($entityid, true, $userid);
                        return true;
                    }
                    break;
                case 'hide':
                    if (!$queued && !qa_user_post_permit_error('permit_hide_show', $post)) {
                        qa_post_set_hidden($entityid, true, $userid);
                        return true;
                    }
                    break;
                case 'reshow':
                    if ($post['hidden'] && !qa_user_post_permit_error('permit_hide_show', $post)) {
                        qa_post_set_hidden($entityid, false, $userid);
                        return true;
                    }
                    break;
                case 'delete':
                    if ($post['hidden'] && !qa_user_post_permit_error('permit_delete_hidden', $post)) {
                        qa_post_delete($entityid);
                        return true;
                    }
                    break;
                case 'clearflags':
                    require_once QA_INCLUDE_DIR . 'app/votes.php';
                    if (!qa_user_post_permit_error('permit_hide_show', $post)) {
                        qa_flags_clear_all($post, $userid, qa_get_logged_in_handle(), null);
                        return true;
                    }
                    break;
            }
        }
    }
    return false;
}
Example #6
0
 function do_hide($data, $post)
 {
     $userid = qa_get_logged_in_userid();
     $cookieid = qa_cookie_get();
     $userlevel = qa_user_level_for_post($post);
     $postid = (int) @$data['action_id'];
     $rules['closed'] = $post['basetype'] == 'Q' && (isset($post['closedbyid']) || isset($post['selchildid']) && qa_opt('do_close_on_select'));
     $rules['isbyuser'] = qa_post_is_by_user($post, $userid, $cookieid);
     $rules['queued'] = substr($post['type'], 1) == '_QUEUED';
     $rules['authorlast'] = !isset($post['lastuserid']) || $post['lastuserid'] === $post['userid'];
     $notclosedbyother = !($rules['closed'] && isset($post['closedbyid']) && !$rules['authorlast']);
     $nothiddenbyother = !($post['hidden'] && !$rules['authorlast']);
     $permiterror_hide_show = qa_user_permit_error($rules['isbyuser'] ? null : 'permit_hide_show', null, $userlevel);
     $rules['reshowimmed'] = $post['hidden'] && !qa_user_permit_error('permit_hide_show', null, $userlevel);
     // means post can be reshown immediately without checking whether it needs moderation
     $hideable = !$post['hidden'] && ($rules['isbyuser'] || !$rules['queued']) && !$permiterror_hide_show && ($notclosedbyother || !qa_user_permit_error('permit_hide_show', null, $userlevel));
     $showable = $post['hidden'] && !$permiterror_hide_show && ($rules['reshowimmed'] || $nothiddenbyother && !$post['flagcount']);
     // cannot reshow a question if it was hidden by someone else, or if it has flags - unless you have global hide/show permissions
     require_once QA_INCLUDE_DIR . 'qa-app-posts.php';
     if ($hideable && isset($data['action_data']['hide'])) {
         // hide allowed
         qa_post_set_hidden($postid, true, $userid);
     } else {
         if ($showable && !isset($data['action_data']['hide'])) {
             // reshow allowed
             qa_post_set_hidden($postid, false, $userid);
         } else {
             return false;
         }
     }
     return true;
 }
Example #7
0
 public function actionFillDb()
 {
     set_time_limit(0);
     ini_set('mysqli.reconnect', 'on');
     ini_set('mysql.connect_timeout', 400);
     // 		foreach (glob("C:/Users/fabio/git/qea/webapp/protected/vendors/qea/qa-include/*.php") as $filename)
     // 		{
     // 			inclde $filename;
     // 		}
     $tag = "";
     $criteria = new CDbCriteria();
     $criteria->condition = "post_type_l1 like '%useful%' AND post_type_l3 like '%si%' ";
     // 			$criteria->condition = "fbpid = 143370932459708";
     $posts = FbPost::model()->findAll($criteria);
     foreach ($posts as $p) {
         $blob_id = null;
         if ($this->addFakeName($p->author_id)) {
             $qa_user_id = $this->addAuthor($p->author_id);
         }
         if (is_array($qa_user_id)) {
             $qa_user_id = $qa_user_id[0];
         }
         // 				$tag =  str_replace("_baseline", "",$p->post_type_l2);
         // 				$tag =  str_replace("_", "-",$p->post_type_l2);
         //categories
         if (isset($p->degree_group_id)) {
             $category_id = $this->setSecondLevelCategory($p->degree_group_id, 1);
         } else {
             if (isset($p->exam_group_id)) {
                 $exam_group = ExamGroup::model()->findByPk($p->exam_group_id);
                 $course = Courses::model()->findByPk($exam_group->courses_id);
                 $parent = $this->setSecondLevelCategory($course->degree_id, 0);
                 $category_id = $this->setThirdLevelCategory($course->name, $parent);
                 // 				 	$exam_group = ExamGroup::model()->findByPk($p->exam_group_id);
                 // 				 	$course = Courses::model()->findByPk($exam_group->courses_id);
                 $tag = $course->name;
                 $tag = str_replace(" ", "-", $tag);
                 // 				 	$tag = $tag.",";
             }
         }
         $photo = PhotoFbPost::model()->findByAttributes(array('element_id' => $p->fbpid));
         if (isset($photo)) {
             $photo->medium = str_replace("/" . $photo->fid . "jpeg", "", $photo->medium);
             $blob_id = qa_upload_file($photo->medium, $photo->fid . 'jpeg');
         }
         $tag_hold = "";
         $substrmessage = substr($p->message, 0, 50);
         if (is_int(strpos($substrmessage, "["))) {
             for ($i = strpos($substrmessage, "[") + 1; $i < strlen($p->message); $i++) {
                 if ($p->message[$i] == "]") {
                     break;
                 }
                 $tag_hold = $tag_hold . $p->message[$i];
             }
             if ($tag == "") {
                 $tag = str_replace(" ", "-", $tag_hold);
             } else {
                 $tag = $tag . "," . str_replace(" ", "-", $tag_hold);
             }
         }
         $title = substr($p->message, 0, 100);
         $title = $title . "...";
         //posts
         if (qa_post_check_by_fb_id($p->fbpid) == null) {
             if ($blob_id != null) {
                 $p->message = '<p><img alt="" src="http://www.universitree.com/?qa=blob&amp;qa_blobid=' . $blob_id['blobid'] . '" style="height:250px;"><br>' . $p->message . '</p>';
                 //RIVEDI
                 $question_id = qa_post_create_with_data("Q", null, $title, $p->message, 'html', $p->created_time, $category_id, $tag, $qa_user_id);
                 qa_post_set_hidden($question_id, true);
             } else {
                 $question_id = qa_post_create_with_data("Q", null, $title, $p->message, '', $p->created_time, $category_id, $tag, $qa_user_id);
             }
             qa_post_create_fb_mapping($question_id, $p->fbpid);
             $this->addLikes($p->fbpid, $question_id);
             $this->addAnswer($p->fbpid, $question_id);
             //	$this->deletePost($p->fbpid);
         }
         // 				$comments = FbPostComment::model()->findAllByAttributes(array("ref_entity_id" => $p->fbpid));
         // 				foreach ($comments as $c){
         // 					if($this->addFakeName($c->author_id))
         // 					if(!$this->addAuthor($c->author_id))
         // 						echo "problemi di inconsistenza nei commenti";
         // 				}
         //inserire qui gli unset
         unset($blob_id);
         unset($qa_user_id);
         unset($category_id);
         unset($exam_group);
         unset($course);
         unset($photo);
         $p->post_type_l1 = "ut_base";
         $p->save();
     }
     //$this->deleteUselessPost();
 }
 /**
  * Fetches the child posts of the question and delete them recursively
  *
  * @param $postid
  */
 function ami_dhp_post_delete_recursive($postid)
 {
     require_once QA_INCLUDE_DIR . 'qa-app-admin.php';
     require_once QA_INCLUDE_DIR . 'qa-db-admin.php';
     require_once QA_INCLUDE_DIR . 'qa-db-selects.php';
     require_once QA_INCLUDE_DIR . 'qa-app-format.php';
     require_once QA_INCLUDE_DIR . 'qa-app-posts.php';
     global $ami_dhp_posts_deleted;
     if (is_null($ami_dhp_posts_deleted)) {
         $ami_dhp_posts_deleted = array();
     }
     if (in_array($postid, $ami_dhp_posts_deleted)) {
         return;
     }
     $oldpost = qa_post_get_full($postid, 'QAC');
     if (!$oldpost['hidden']) {
         qa_post_set_hidden($postid, true, null);
         $oldpost = qa_post_get_full($postid, 'QAC');
     }
     switch ($oldpost['basetype']) {
         case 'Q':
             $answers = qa_post_get_question_answers($postid);
             $commentsfollows = qa_post_get_question_commentsfollows($postid);
             $closepost = qa_post_get_question_closepost($postid);
             if (count($answers)) {
                 foreach ($answers as $answer) {
                     ami_dhp_post_delete_recursive($answer['postid']);
                 }
             }
             if (count($commentsfollows)) {
                 foreach ($commentsfollows as $commentsfollow) {
                     ami_dhp_post_delete_recursive($commentsfollow['postid']);
                 }
             }
             if (!in_array($oldpost['postid'], $ami_dhp_posts_deleted)) {
                 qa_question_delete($oldpost, null, null, null, $closepost);
                 $ami_dhp_posts_deleted[] = $oldpost['postid'];
             }
             break;
         case 'A':
             $question = qa_post_get_full($oldpost['parentid'], 'Q');
             $commentsfollows = qa_post_get_answer_commentsfollows($postid);
             if (count($commentsfollows)) {
                 foreach ($commentsfollows as $commentsfollow) {
                     ami_dhp_post_delete_recursive($commentsfollow['postid']);
                 }
             }
             if (!in_array($oldpost['postid'], $ami_dhp_posts_deleted)) {
                 qa_answer_delete($oldpost, $question, null, null, null);
                 $ami_dhp_posts_deleted[] = $oldpost['postid'];
             }
             break;
         case 'C':
             $parent = qa_post_get_full($oldpost['parentid'], 'QA');
             $question = qa_post_parent_to_question($parent);
             if (!in_array($oldpost['postid'], $ami_dhp_posts_deleted)) {
                 qa_comment_delete($oldpost, $question, $parent, null, null, null);
                 $ami_dhp_posts_deleted[] = $oldpost['postid'];
             }
             break;
     }
 }
Example #9
0
            qa_db_user_set_flag($userid, QA_USER_FLAGS_USER_BLOCKED, true);
            qa_report_event('u_block', $qa_login_userid, qa_get_logged_in_handle(), $qa_cookieid, array('userid' => $userid, 'handle' => $useraccount['handle']));
            qa_redirect($qa_request);
        }
        if (qa_clicked('dounblock')) {
            require_once QA_INCLUDE_DIR . 'qa-db-users.php';
            qa_db_user_set_flag($userid, QA_USER_FLAGS_USER_BLOCKED, false);
            qa_report_event('u_unblock', $qa_login_userid, qa_get_logged_in_handle(), $qa_cookieid, array('userid' => $userid, 'handle' => $useraccount['handle']));
            qa_redirect($qa_request);
        }
        if (qa_clicked('dohideall') && !qa_user_permit_error('permit_hide_show')) {
            require_once QA_INCLUDE_DIR . 'qa-db-admin.php';
            require_once QA_INCLUDE_DIR . 'qa-app-posts.php';
            $postids = qa_db_get_user_visible_postids($userid);
            foreach ($postids as $postid) {
                qa_post_set_hidden($postid, true, $qa_login_userid);
            }
            qa_redirect($qa_request);
        }
    }
}
//	Get information on user references in answers and other stuff need for page
$pagesize = qa_opt('page_size_user_posts');
$questions = qa_any_sort_by_date(array_merge($questions, $answerquestions, $commentquestions));
$questions = array_slice($questions, 0, $pagesize);
$usershtml = qa_userids_handles_html(qa_any_get_userids_handles($questions));
$usershtml[$userid] = $userhtml;
//	Prepare content for theme
$qa_content = qa_content_prepare(true);
$qa_content['title'] = qa_lang_html_sub('profile/user_x', $userhtml);
//	General information about the user, only available if we're using internal user management