Example #1
0
 function store()
 {
     $myts =& MyTextSanitizer::getInstance();
     $title = "";
     $imgurl = "";
     if (isset($this->topic_title) && $this->topic_title != "") {
         $title = $myts->makeTboxData4Save($this->topic_title);
     }
     if (isset($this->topic_imgurl) && $this->topic_imgurl != "") {
         $imgurl = $myts->makeTboxData4Save($this->topic_imgurl);
     }
     if (!isset($this->topic_pid) || !is_numeric($this->topic_pid)) {
         $this->topic_pid = 0;
     }
     if (empty($this->topic_id)) {
         $this->topic_id = $this->db->genId($this->table . "_topic_id_seq");
         $sql = sprintf("INSERT INTO %s (topic_id, topic_pid, topic_imgurl, topic_title) VALUES (%u, %u, '%s', '%s')", $this->table, $this->topic_id, $this->topic_pid, $imgurl, $title);
     } else {
         $sql = sprintf("UPDATE %s SET topic_pid = %u, topic_imgurl = '%s', topic_title = '%s' WHERE topic_id = %u", $this->table, $this->topic_pid, $imgurl, $title, $this->topic_id);
     }
     if (!($result = $this->db->query($sql))) {
         ErrorHandler::show('0022');
     }
     if ($this->use_permission == true) {
         if (empty($this->topic_id)) {
             $this->topic_id = $this->db->getInsertId();
         }
         $xt = new XoopsTree($this->table, "topic_id", "topic_pid");
         $parent_topics = $xt->getAllParentId($this->topic_id);
         if (!empty($this->m_groups) && is_array($this->m_groups)) {
             foreach ($this->m_groups as $m_g) {
                 $moderate_topics = XoopsPerms::getPermitted($this->mid, "ModInTopic", $m_g);
                 $add = true;
                 // only grant this permission when the group has this permission in all parent topics of the created topic
                 foreach ($parent_topics as $p_topic) {
                     if (!in_array($p_topic, $moderate_topics)) {
                         $add = false;
                         continue;
                     }
                 }
                 if ($add == true) {
                     $xp = new XoopsPerms();
                     $xp->setModuleId($this->mid);
                     $xp->setName("ModInTopic");
                     $xp->setItemId($this->topic_id);
                     $xp->store();
                     $xp->addGroup($m_g);
                 }
             }
         }
         if (!empty($this->s_groups) && is_array($this->s_groups)) {
             foreach ($s_groups as $s_g) {
                 $submit_topics = XoopsPerms::getPermitted($this->mid, "SubmitInTopic", $s_g);
                 $add = true;
                 foreach ($parent_topics as $p_topic) {
                     if (!in_array($p_topic, $submit_topics)) {
                         $add = false;
                         continue;
                     }
                 }
                 if ($add == true) {
                     $xp = new XoopsPerms();
                     $xp->setModuleId($this->mid);
                     $xp->setName("SubmitInTopic");
                     $xp->setItemId($this->topic_id);
                     $xp->store();
                     $xp->addGroup($s_g);
                 }
             }
         }
         if (!empty($this->r_groups) && is_array($this->r_groups)) {
             foreach ($r_groups as $r_g) {
                 $read_topics = XoopsPerms::getPermitted($this->mid, "ReadInTopic", $r_g);
                 $add = true;
                 foreach ($parent_topics as $p_topic) {
                     if (!in_array($p_topic, $read_topics)) {
                         $add = false;
                         continue;
                     }
                 }
                 if ($add == true) {
                     $xp = new XoopsPerms();
                     $xp->setModuleId($this->mid);
                     $xp->setName("ReadInTopic");
                     $xp->setItemId($this->topic_id);
                     $xp->store();
                     $xp->addGroup($r_g);
                 }
             }
         }
     }
     return true;
 }
Example #2
0
	function store()
	{
		$myts =& MyTextSanitizer::getInstance();
		$title = "";
		$imgurl = "";
		$topic_description=$myts->censorString($this->topic_description);
		$topic_description= $myts->addSlashes($topic_description);
		$topic_rssurl=$myts->addSlashes($this->topic_rssurl);
		$topic_color=$myts->addSlashes($this->topic_color);

		if ( isset($this->topic_title) && $this->topic_title != "" ) {
			$title = $myts->addSlashes($this->topic_title);
		}
		if ( isset($this->topic_imgurl) && $this->topic_imgurl != "" ) {
			$imgurl = $myts->addSlashes($this->topic_imgurl);
		}
		if ( !isset($this->topic_pid) || !is_numeric($this->topic_pid) ) {
			$this->topic_pid = 0;
		}
		$topic_frontpage=intval($this->topic_frontpage);
		$insert=false;
		if ( empty($this->topic_id) ) {
			$insert=true;
			$this->topic_id = $this->db->genId($this->table."_topic_id_seq");
			$sql = sprintf("INSERT INTO %s (topic_id, topic_pid, topic_imgurl, topic_title, menu, topic_description, topic_frontpage, topic_rssurl, topic_color) VALUES (%u, %u, '%s', '%s', %u, '%s', %d, '%s', '%s')", $this->table, intval($this->topic_id), intval($this->topic_pid), $imgurl, $title, intval($this->menu), $topic_description, $topic_frontpage, $topic_rssurl, $topic_color);
		} else {
			$sql = sprintf("UPDATE %s SET topic_pid = %u, topic_imgurl = '%s', topic_title = '%s', menu=%d, topic_description='%s', topic_frontpage=%d, topic_rssurl='%s', topic_color='%s' WHERE topic_id = %u", $this->table, intval($this->topic_pid), $imgurl, $title, intval($this->menu), $topic_description, $topic_frontpage, $topic_rssurl,$topic_color, intval($this->topic_id));
		}
		if ( !$result = $this->db->query($sql) ) {
			// TODO: Replace with something else
			ErrorHandler::show('0022');
		} else {
			if($insert) {
				$this->topic_id = $this->db->getInsertId();
			}
		}

		if ( $this->use_permission == true ) {
			$xt = new XoopsTree($this->table, "topic_id", "topic_pid");
			$parent_topics = $xt->getAllParentId($this->topic_id);
			if ( !empty($this->m_groups) && is_array($this->m_groups) ){
				foreach ( $this->m_groups as $m_g ) {
					$moderate_topics = XoopsPerms::getPermitted($this->mid, "ModInTopic", $m_g);
					$add = true;
					// only grant this permission when the group has this permission in all parent topics of the created topic
					foreach($parent_topics as $p_topic){
						if ( !in_array($p_topic, $moderate_topics) ) {
							$add = false;
							continue;
						}
					}
					if ( $add == true ) {
						$xp = new XoopsPerms();
						$xp->setModuleId($this->mid);
						$xp->setName("ModInTopic");
						$xp->setItemId($this->topic_id);
						$xp->store();
						$xp->addGroup($m_g);
					}
				}
			}
			if ( !empty($this->s_groups) && is_array($this->s_groups) ){
				foreach ($this->s_groups as $s_g ) {
					$submit_topics = XoopsPerms::getPermitted($this->mid, "SubmitInTopic", $s_g);
					$add = true;
					foreach($parent_topics as $p_topic){
						if ( !in_array($p_topic, $submit_topics) ) {
							$add = false;
							continue;
						}
					}
					if ( $add == true ) {
						$xp = new XoopsPerms();
						$xp->setModuleId($this->mid);
						$xp->setName("SubmitInTopic");
						$xp->setItemId($this->topic_id);
						$xp->store();
						$xp->addGroup($s_g);
					}
				}
			}
			if ( !empty($this->r_groups) && is_array($this->r_groups) ){
				foreach ( $this->s_groups as $r_g ) {
					$read_topics = XoopsPerms::getPermitted($this->mid, "ReadInTopic", $r_g);
					$add = true;
					foreach($parent_topics as $p_topic){
						if ( !in_array($p_topic, $read_topics) ) {
							$add = false;
							continue;
						}
					}
					if ( $add == true ) {
						$xp = new XoopsPerms();
						$xp->setModuleId($this->mid);
						$xp->setName("ReadInTopic");
						$xp->setItemId($this->topic_id);
						$xp->store();
						$xp->addGroup($r_g);
					}
				}
			}
		}
		return true;
	}