function convert_serialized($serializedData) { $arrayData = unserialize($serializedData); return e107::serialize($arrayData, FALSE); }
/** * Get all Glyphs */ function getGlyphs($type = 'fa4', $prefix = '') { $icons = array(); if ($type == 'bs2') { $matches = array('glass', 'music', 'search', 'envelope', 'heart', 'star', 'star-empty', 'user', 'film', 'th-large', 'th', 'th-list', 'ok', 'remove', 'zoom-in', 'zoom-out', 'off', 'signal', 'cog', 'trash', 'home', 'file', 'time', 'road', 'download-alt', 'download', 'upload', 'inbox', 'play-circle', 'repeat', 'refresh', 'list-alt', 'lock', 'flag', 'headphones', 'volume-off', 'volume-down', 'volume-up', 'qrcode', 'barcode', 'tag', 'tags', 'book', 'bookmark', 'print', 'camera', 'font', 'bold', 'italic', 'text-height', 'text-width', 'align-left', 'align-center', 'align-right', 'align-justify', 'list', 'indent-left', 'indent-right', 'facetime-video', 'picture', 'pencil', 'map-marker', 'adjust', 'tint', 'edit', 'share', 'check', 'move', 'step-backward', 'fast-backward', 'backward', 'play', 'pause', 'stop', 'forward', 'fast-forward', 'step-forward', 'eject', 'chevron-left', 'chevron-right', 'plus-sign', 'minus-sign', 'remove-sign', 'ok-sign', 'question-sign', 'info-sign', 'screenshot', 'remove-circle', 'ok-circle', 'ban-circle', 'arrow-left', 'arrow-right', 'arrow-up', 'arrow-down', 'share-alt', 'resize-full', 'resize-small', 'plus', 'minus', 'asterisk', 'exclamation-sign', 'gift', 'leaf', 'fire', 'eye-open', 'eye-close', 'warning-sign', 'plane', 'calendar', 'random', 'comment', 'magnet', 'chevron-up', 'chevron-down', 'retweet', 'shopping-cart', 'folder-close', 'folder-open', 'resize-vertical', 'resize-horizontal', 'hdd', 'bullhorn', 'bell', 'certificate', 'thumbs-up', 'thumbs-down', 'hand-right', 'hand-left', 'hand-up', 'hand-down', 'circle-arrow-right', 'circle-arrow-left', 'circle-arrow-up', 'circle-arrow-down', 'globe', 'wrench', 'tasks', 'filter', 'briefcase', 'fullscreen'); foreach ($matches as $match) { $icons[] = $prefix . $match; } return $icons; } if ($type == 'bs3') { $matches = array('adjust', 'align-center', 'align-justify', 'align-left', 'align-right', 'arrow-down', 'arrow-left', 'arrow-right', 'arrow-up', 'asterisk', 'backward', 'ban-circle', 'barcode', 'bell', 'bold', 'book ', 'bookmark', 'briefcase', 'bullhorn', 'calendar', 'camera', 'certificate', 'check', 'chevron-down', 'chevron-left', 'chevron-right', 'chevron-up', 'circle-arrow-down', 'circle-arrow-left', 'circle-arrow-right ', 'circle-arrow-up', 'cloud', 'cloud-download', 'cloud-upload', 'cog', 'collapse-down', 'collapse-up', 'comment', 'compressed', 'copyright-mark', 'credit-card', 'cutlery', 'dashboard', 'download', 'download-alt ', 'earphone', 'edit', 'eject', 'envelope', 'euro', 'exclamation-sign', 'expand', 'export', 'eye-close', 'eye-open', 'facetime-video', 'fast-backward', 'fast-forward', 'file', 'film', 'filter', 'fire', 'flag ', 'flash', 'floppy-disk', 'floppy-open', 'floppy-remove', 'floppy-save', 'floppy-saved', 'folder-close', 'folder-open', 'font', 'forward', 'fullscreen', 'gbp', 'gift ', 'glass', 'globe', 'hand-down', 'hand-left', 'hand-right', 'hand-up', 'hd-video', 'hdd', 'header', 'headphones', 'heart', 'heart-empty', 'home', 'import', 'inbox', 'indent-left', 'indent-right', 'info-sign', 'italic', 'leaf', 'link', 'list ', 'list-alt', 'lock', 'log-in', 'log-out', 'magnet', 'map-marker', 'minus', 'minus-sign', 'move', 'music', 'new-window', 'off', 'ok', 'ok-circle', 'ok-sign', 'open', 'paperclip', 'pause', 'pencil', 'phone', 'phone-alt', 'picture ', 'plane', 'play', 'play-circle', 'plus', 'plus-sign', 'print', 'pushpin', 'qrcode', 'question-sign', 'random', 'record', 'refresh', 'registration-mark', 'remove', 'remove-circle', 'remove-sign', 'repeat', 'resize-full', 'resize-horizontal ', 'resize-small', 'resize-vertical', 'retweet', 'road', 'save', 'saved', 'screenshot', 'sd-video', 'search', 'send', 'share', 'share-alt', 'shopping-cart', 'signal', 'sort', 'sort-by-alphabet', 'sort-by-alphabet-alt ', 'sort-by-attributes', 'sort-by-attributes-alt', 'sort-by-order', 'sort-by-order-alt', 'sound-5-1', 'sound-6-1', 'sound-7-1', 'sound-dolby', 'sound-stereo', 'star', 'stats', 'step-backward', 'step-forward', 'stop ', 'subtitles', 'tag', 'tags', 'tasks', 'text-height', 'text-width', 'th', 'th-large', 'th-list', 'thumbs-down', 'thumbs-up', 'time', 'tint', 'tower', 'transfer', 'trash', 'tree-conifer', 'tree-deciduous', 'unchecked', 'upload ', 'usd', 'user', 'volume-down', 'volume-off', 'volume-up', 'warning-sign', 'wrench', 'zoom-in', 'zoom-out'); foreach ($matches as $match) { $icons[] = $prefix . $match; } return $icons; } $cache = e107::getCache(); $cache->setMD5('_' . $prefix . $type); if ($data = $cache->retrieve($type, 360, true)) { return e107::unserialize($data); } if ($type == 'fa4') { $pattern = '/\\.(fa-(?:\\w+(?:-)?)+):before/'; $subject = e107::getFile()->getRemoteContent('http://netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.css'); // print_a($subject); } elseif ($type == 'fa3') { $pattern = '/\\.(icon-(?:\\w+(?:-)?)+):before/'; $subject = file_get_contents(e_WEB_JS . 'font-awesome/css/font-awesome.css'); } preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER); foreach ($matches as $match) { $icons[] = $prefix . substr($match[1], 3); } $data = e107::serialize($icons); $cache->set($type, $data, true); return $icons; }
function insert_default_prefs($id) { global $sql, $aa, $plugintable; $plugintable = "pcontent"; $plugindir = e_PLUGIN . "content/"; unset($content_pref, $tmp); if (!is_object($aa)) { require_once $plugindir . "handlers/content_class.php"; $aa = new content(); } $content_pref = $aa->ContentDefaultPrefs($id); $tmp = e107::serialize($content_pref, true); //$tmp = $eArrayStorage->WritexxxArray($content_pref); $sql->db_Update($plugintable, "content_pref='{$tmp}' WHERE content_id='{$id}' "); }
function dbAssignAdmins($mode, $id, $value) { global $plugintable, $qs, $sql; if ($mode == "admin") { $id = intval($id); $sql->db_Select($plugintable, "content_pref", "content_id = '" . intval($id) . "' "); $row = $sql->db_Fetch(); //get current preferences $content_pref = e107::unserialize($row['content_pref']); //$content_pref = $eArrayStorage->ReadxxxArray($row['content_pref']); //assign new preferences if ($value == "clear") { $content_pref["content_manager_allowed"] = ""; } else { $content_pref["content_manager_allowed"] = $value; } //create new array of preferences $tmp = e107::serialize($content_pref, true); //$tmp = $eArrayStorage->WritexxxArray($content_pref); $sql->db_Update($plugintable, "content_pref = '{$tmp}' WHERE content_id = '" . intval($id) . "' "); $message = CONTENT_ADMIN_CAT_LAN_34; return $message; } else { return FALSE; } }
/** * Set Parms for a specific menu. * @param string $plugin ie. plugin folder name. * @param string $menu menu name. including the _menu but not the .php * @param array $parms * @param string|int $location default 'all' or a menu area number.. * @return int|boolean number of records updated or false. */ public function setParms($plugin, $menu, $parms = array(), $location = 'all') { $qry = 'menu_parms="' . e107::serialize($parms) . '" WHERE menu_parms="" AND menu_path="' . $plugin . '/" AND menu_name="' . $menu . '" '; $qry .= $location != 'all' ? 'menu_location=' . intval($location) : ''; return e107::getDb()->update('menus', $qry); }
/** * Attachments */ function step10_ajax() { $sql = e107::getDb(); global $f; $lastPost = vartrue($_SESSION['forumupdate']['attachment_last'], 0); /* $qry = " SELECT post_id, post_thread, post_entry, post_user FROM `#forum_post` WHERE post_entry REGEXP '_[[:digit:]]' AND post_id > {$lastPost} ORDER BY post_id LIMIT 50 "; */ $qry = "\n\tSELECT post_id, post_thread, post_entry, post_user FROM `#forum_post`\n\tWHERE post_id > {$lastPost} AND post_entry LIKE '%public/%'\n\t ORDER BY post_id LIMIT 50\n\t"; // file_put_contents(e_LOG."forum_update_step10.log",$qry."\n",FILE_APPEND); if ($sql->gen($qry)) { while ($row = $sql->fetch(MYSQL_ASSOC)) { $postList[] = $row; } $i = 0; $pcount = 0; $f->log("Found " . count($postList) . " posts with attachments"); foreach ($postList as $post) { // echo htmlentities($post['post_entry'])."<br />"; $_SESSION['forumupdate']['attachment_last'] = $post['post_id']; $_SESSION['forumupdate']['attachment_count']++; $i++; // if($pcount++ > 10) { die('here 10'); } $attachments = array(); $foundFiles = array(); // echo $post['post_entry']."<br /><br />"; //[link={e_FILE}public/1230091080_1_FT0_julia.jpg][img:width=60&height=45]{e_FILE}public/1230091080_1_FT0_julia_.jpg[/img][/link][br] //Check for images with thumbnails linking to full size // if (preg_match_all('#\[link=(.*?)\]\[img.*?\]({e_FILE}.*?)\[/img\]\[/link\]#ms', $post['post_entry'], $matches, PREG_SET_ORDER)) if (preg_match_all('#\\[link=([^\\]]*?)\\]\\s*?\\[img.*?\\](({e_FILE}|e107_files|\\.\\./\\.\\./e107_files)[^\\]]*)\\[/img\\]\\s*?\\[/link\\]#ms', $post['post_entry'], $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { $att = array(); $att['thread_id'] = $post['post_thread']; $att['type'] = 'img'; $att['html'] = $match[0]; $att['name'] = str_replace(array("\r\n", "\n", "\r"), '', $match[1]); $att['thumb'] = $match[2]; $attachments[] = $att; $foundFiles[] = $match[1]; $foundFiles[] = $match[2]; logAttachment($att['thread_id'], 'link', $att['name']); } } if (preg_match_all('#\\[lightbox=([^\\]]*?)\\]\\s*?\\[img.*?\\](({e_FILE}|e107_files|\\.\\./\\.\\./e107_files)[^\\]]*)\\[/img\\]\\s*?\\[/lightbox\\]#ms', $post['post_entry'], $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { $att = array(); $att['thread_id'] = $post['post_thread']; $att['type'] = 'img'; $att['html'] = $match[0]; $att['name'] = str_replace(array("\r\n", "\n", "\r"), '', $match[1]); $att['thumb'] = $match[2]; $attachments[] = $att; $foundFiles[] = $match[1]; $foundFiles[] = $match[2]; logAttachment($att['thread_id'], 'lightbox', $att['name']); } } /* if (preg_match_all('#\[link=(.*?)\]\[img.*?\](\.\./\.\./e107_files/public/.*?)\[/img\]\[/link\]#ms', $post['post_entry'], $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { $att = array(); $att['thread_id'] = $post['post_thread']; $att['type'] = 'img'; $att['html'] = $match[0]; $att['name'] = $match[1]; $att['thumb'] = $match[2]; $attachments[] = $att; $foundFiles[] = $match[1]; $foundFiles[] = $match[2]; logAttachment($att['thread_id'],'link2', $att['name']); } } */ //<div // class='spacer'>[img:width=604&height=453]{e_FILE}public/1229562306_1_FT0_julia.jpg[/img]</div> //Check for attached full-size images // if (preg_match_all('#\[img.*?\]({e_FILE}.*?_FT\d+_.*?)\[/img\]#ms', $post['post_entry'], $matches, PREG_SET_ORDER)) if (preg_match_all('#\\[img[^\\]]*?\\]\\s*?(({e_FILE}|e107_files|\\.\\./\\.\\./e107_files)[^\\[]*)\\s*?\\[/img\\]#ms', $post['post_entry'], $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { //Ensure it hasn't already been handled above if (!in_array($match[1], $foundFiles)) { $att = array(); $att['thread_id'] = $post['post_thread']; $att['type'] = 'img'; $att['html'] = $match[0]; $att['name'] = str_replace(array("\r\n", "\n", "\r"), '', $match[1]); $att['thumb'] = ''; $attachments[] = $att; logAttachment($att['thread_id'], 'img', $att['name']); } } } /* if (preg_match_all('#\[img.*?\](\.\./\.\./e107_files/public/.*?_FT\d+_.*?)\[/img\]#ms', $post['post_entry'], $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { //Ensure it hasn't already been handled above if (!in_array($match[1], $foundFiles)) { $att = array(); $att['thread_id'] = $post['post_thread']; $att['type'] = 'img'; $att['html'] = $match[0]; $att['name'] = $match[1]; $att['thumb'] = ''; $attachments[] = $att; } } } */ //[file={e_FILE}public/1230090820_1_FT0_julia.zip]julia.zip[/file] //Check for attached file (non-images) // if (preg_match_all('#\[file=({e_FILE}.*?)\](.*?)\[/file\]#ms', $post['post_entry'], $matches, PREG_SET_ORDER)) if (preg_match_all('#\\[file=(({e_FILE}|e107_files|\\.\\./\\.\\./e107_files)[^\\]]*)#ms', $post['post_entry'], $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { $att = array(); $att['thread_id'] = $post['post_thread']; $att['type'] = 'file'; $att['html'] = $match[0]; $att['name'] = $match[1]; $att['thumb'] = ''; $attachments[] = $att; logAttachment($att['thread_id'], 'file', $att['name']); } } /* if (preg_match_all('#\[file=(\.\./\.\./e107_files/public/.*?)\](.*?)\[/file\]#ms', $post['post_entry'], $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { $att = array(); $att['thread_id'] = $post['post_thread']; $att['type'] = 'file'; $att['html'] = $match[0]; $att['name'] = $match[1]; $att['thumb'] = ''; $attachments[] = $att; } } */ if (count($attachments)) { $f->log("found " . count($attachments) . " attachments"); $newValues = array(); $info = array(); $info['post_entry'] = $post['post_entry']; foreach ($attachments as $attachment) { $error = ''; $f->log($attachment['name']); if ($f->moveAttachment($attachment, $post, $error)) { $type = $attachment['type']; $newValues[$type][] = basename($attachment['name']); $info['post_entry'] = str_replace($attachment['html'], '', $info['post_entry']); } else { $errorText .= "Failure processing post {$post['post_id']} - file {$attachment['name']} - {$error}<br />"; $f->log("Failure processing post {$post['post_id']} - file {$attachment['name']} - {$error}"); } } // echo $errorText."<br />"; // Did we make any changes at all? if (count($newValues)) { $info['WHERE'] = 'post_id = ' . $post['post_id']; $info['post_attachments'] = e107::serialize($newValues); // $sql->update('forum_post', $info); // XXX FIXME TODO screwed up due to _FIELD_DEFS $sql->update('forum_post', "post_entry = \"" . $info['post_entry'] . "\", post_attachments=\"" . $info['post_attachments'] . "\" WHERE post_id = " . $post['post_id'] . ""); } } } $totalOutput = round($_SESSION['forumupdate']['attachment_count'] / $_SESSION['forumupdate']['attachment_total'] * 100, 1); echo $totalOutput; /* $debugRound = " forumupdate_attachment_count = ".$_SESSION['forumupdate']['attachment_count']." forumupdate_attachment_total = ".$_SESSION['forumupdate']['attachment_total']." calculated = ".$totalOutput." "; file_put_contents(e_LOG."forum_update_step10.log",$debugRound,FILE_APPEND); */ } else { echo 100; } }
/** * Insert a new thread or a reply/quoted reply. */ function insertPost() { $postInfo = array(); $threadInfo = array(); $threadOptions = array(); $fp = new floodprotect(); if (isset($_POST['newthread']) && trim($_POST['subject']) == '' || trim($_POST['post']) == '') { message_handler('ALERT', 5); } else { if ($fp->flood('forum_thread', 'thread_datestamp') == false && !ADMIN) { echo "<script type='text/javascript'>document.location.href='" . e_BASE . "index.php'</script>\n"; exit; } $hasPoll = $this->action == 'nt' && varset($_POST['poll_title']) && $_POST['poll_option'][0] != '' && $_POST['poll_option'][1] != ''; if (USER) { $postInfo['post_user'] = USERID; $threadInfo['thread_lastuser'] = USERID; $threadInfo['thread_user'] = USERID; $threadInfo['thread_lastuser_anon'] = ''; } else { $postInfo['post_user_anon'] = $_POST['anonname']; $threadInfo['thread_lastuser_anon'] = $_POST['anonname']; $threadInfo['thread_user_anon'] = $_POST['anonname']; } $time = time(); $postInfo['post_entry'] = $_POST['post']; $postInfo['post_forum'] = $this->data['forum_id']; $postInfo['post_datestamp'] = $time; $postInfo['post_ip'] = e107::getIPHandler()->getIP(FALSE); $threadInfo['thread_lastpost'] = $time; if (isset($_POST['no_emote'])) { $postInfo['post_options'] = serialize(array('no_emote' => 1)); } //If we've successfully uploaded something, we'll have to edit the post_entry and post_attachments $newValues = array(); if ($uploadResult = $this->processAttachments()) { foreach ($uploadResult as $ur) { //$postInfo['post_entry'] .= $ur['txt']; // $_tmp = $ur['type'].'*'.$ur['file']; // if($ur['thumb']) { $_tmp .= '*'.$ur['thumb']; } // if($ur['fname']) { $_tmp .= '*'.$ur['fname']; } $type = $ur['type']; $newValues[$type][] = $ur['file']; // $attachments[] = $_tmp; } // $postInfo['_FIELD_TYPES']['post_attachments'] = 'array'; $postInfo['post_attachments'] = e107::serialize($newValues); //FIXME XXX - broken encoding when saved to DB. } // var_dump($uploadResult); switch ($this->action) { // Reply only. Add the post, update thread record with latest post info. // Update forum with latest post info case 'rp': $postInfo['post_thread'] = $this->id; $newPostId = $this->forumObj->postAdd($postInfo); break; // New thread started. Add the thread info (with lastest post info), add the post. // Update forum with latest post info // New thread started. Add the thread info (with lastest post info), add the post. // Update forum with latest post info case 'nt': $threadInfo['thread_sticky'] = MODERATOR ? (int) $_POST['threadtype'] : 0; $threadInfo['thread_name'] = $_POST['subject']; $threadInfo['thread_forum_id'] = $this->id; $threadInfo['thread_active'] = 1; $threadInfo['thread_datestamp'] = $time; if ($hasPoll) { $threadOptions['poll'] = '1'; } if (is_array($threadOptions) && count($threadOptions)) { $threadInfo['thread_options'] = serialize($threadOptions); } else { $threadInfo['thread_options'] = ''; } if ($postResult = $this->forumObj->threadAdd($threadInfo, $postInfo)) { $newPostId = $postResult['postid']; $newThreadId = $postResult['threadid']; $this->data['thread_id'] = $newThreadId; // $this->data['thread_sef'] = $postResult['threadsef']; $this->data['thread_sef'] = eHelper::title2sef($threadInfo['thread_name'], 'dashl'); if ($_POST['email_notify']) { $this->forumObj->track('add', USERID, $newThreadId); } } break; } e107::getMessage()->addDebug(print_a($postInfo, true)); // e107::getMessage()->addDebug(print_a($this,true)); if ($postResult === -1 || $newPostId === -1) { require_once HEADERF; $message = LAN_FORUM_3006 . "<br ><a class='btn btn-default' href='" . $_SERVER['HTTP_REFERER'] . "'>Return</a>"; $text = e107::getMessage()->addError($message)->render(); e107::getRender()->tablerender(LAN_PLUGIN_FORUM_NAME, $text); // change to forum-title pref. require_once FOOTERF; exit; } $threadId = $this->action == 'nt' ? $newThreadId : $this->id; //If a poll was submitted, let's add it to the poll db if ($this->action == 'nt' && varset($_POST['poll_title']) && $_POST['poll_option'][0] != '' && $_POST['poll_option'][1] != '') { require_once e_PLUGIN . 'poll/poll_class.php'; $_POST['iid'] = $threadId; $poll = new poll(); $poll->submit_poll(2); } e107::getCache()->clear('newforumposts'); // $postInfo = $this->forumObj->postGet($newPostId, 'post'); // $forumInfo = $this->forumObj->forumGet($postInfo['post_forum']); // $threadLink = e107::getUrl()->create('forum/thread/last', $postInfo); // $forumLink = e107::getUrl()->create('forum/forum/view', $forumInfo); $threadLink = e107::url('forum', 'topic', $this->data, 'full') . "&last=1"; $forumLink = e107::url('forum', 'forum', $this->data); if ($this->forumObj->prefs->get('redirect')) { $this->redirect($threadLink); // header('location:'.e107::getUrl()->create('forum/thread/last', $postInfo, array('encode' => false, 'full' => true))); exit; } else { require_once HEADERF; $template = $this->getTemplate('posted'); $SHORTCODES = array('THREADLINK' => $threadLink, 'FORUMLINK' => $forumLink); $txt = isset($_POST['newthread']) ? $template['thread'] : $template['reply']; $txt = e107::getParser()->parseTemplate($txt, true, $SHORTCODES); e107::getRender()->tablerender('Forums', e107::getMessage()->render() . $txt); require_once FOOTERF; exit; } } }
/** * Ensure the tree of userclass data is stored in our object ($this->class_tree). * Only read if its either not present, or the $force flag is set. * Data is cached if enabled * * @param boolean $force - set to TRUE to force a re-read of the info regardless. * @return none */ public function readTree($force = FALSE) { if (isset($this->class_tree) && count($this->class_tree) && !$force) { return; } $e107 = e107::getInstance(); $this->class_tree = array(); $this->class_parents = array(); if ($temp = $e107->ecache->retrieve_sys(UC_CACHE_TAG)) { $this->class_tree = e107::getArrayStorage()->read($temp); unset($temp); } else { $this->sql_r->db_Select('userclass_classes', '*', 'ORDER BY userclass_parent', 'nowhere'); // The order statement should give a consistent return while ($row = $this->sql_r->db_Fetch(MYSQL_ASSOC)) { $this->class_tree[$row['userclass_id']] = $row; $this->class_tree[$row['userclass_id']]['class_children'] = array(); // Create the child array in case needed } // Add in any fixed classes that aren't already defined (they historically didn't have a DB entry, although now its facilitated (and necessary for tree structure) foreach ($this->fixed_classes as $c => $d) { if (!isset($this->class_tree[$c])) { switch ($c) { case e_UC_ADMIN: case e_UC_MAINADMIN: $this->class_tree[$c]['userclass_parent'] = e_UC_NOBODY; break; case e_UC_NEWUSER: $this->class_tree[$c]['userclass_parent'] = e_UC_MEMBER; break; default: $this->class_tree[$c]['userclass_parent'] = e_UC_PUBLIC; } $this->class_tree[$c]['userclass_id'] = $c; $this->class_tree[$c]['userclass_name'] = $d; $this->class_tree[$c]['userclass_description'] = 'Fixed class'; $this->class_tree[$c]['userclass_visibility'] = e_UC_PUBLIC; $this->class_tree[$c]['userclass_editclass'] = e_UC_MAINADMIN; $this->class_tree[$c]['userclass_accum'] = $c; $this->class_tree[$c]['userclass_type'] = UC_TYPE_STD; } } $userCache = e107::serialize($this->class_tree, FALSE); $e107->ecache->set_sys(UC_CACHE_TAG, $userCache); unset($userCache); } // Now build the tree. // There are just two top-level classes - 'Everybody' and 'Nobody' $this->class_parents[e_UC_PUBLIC] = e_UC_PUBLIC; $this->class_parents[e_UC_NOBODY] = e_UC_NOBODY; foreach ($this->class_tree as $uc) { if ($uc['userclass_id'] != e_UC_PUBLIC && $uc['userclass_id'] != e_UC_NOBODY) { if (!isset($this->class_tree[$uc['userclass_parent']])) { echo "Orphaned class record: ID=" . $uc['userclass_id'] . " Name=" . $uc['userclass_name'] . " Parent=" . $uc['userclass_parent'] . "<br />"; } else { // Add to array $this->class_tree[$uc['userclass_parent']]['class_children'][] = $uc['userclass_id']; } } } }
function convertAttachment($row) { if ($row['post_attachment'] != 1) { return; } $id = $row['post_id']; if (isset($this->forum_attachments[$id])) { $attach = array(); $forum = $this->helperClass; // e107_plugins/forum/forum_class.php if ($folder = $forum->getAttachmentPath($row['poster_id'], true)) { e107::getMessage()->addDebug("Created Attachment Folder: " . $folder); } else { e107::getMessage()->addError("Couldn't find/create attachment folder for user-id: " . $row['poster_id']); } foreach ($this->forum_attachments[$id] as $file => $name) { if (preg_match('#.JPG|.jpg|.gif|.png|.PNG|.GIF|.jpeg|.JPEG$#', $name)) { $attach['img'][] = $file; } else { $attach['file'][] = $file; } if ($this->forum_attachment_path) { $oldpath = e_BASE . $this->forum_attachment_path . "/" . $file; $newpath = $folder . $file; if (rename($oldpath, $newpath)) { e107::getMessage()->addDebug("Renamed file from <b>{$oldpath}</b> to <b>{$newpath}</b>"); } else { e107::getMessage()->addError("Couldn't rename file from <b>{$oldpath}</b> to <b>{$newpath}</b>"); } } } } return e107::serialize($attach); // set attachments }
private function loadPermList() { if ($tmp = e107::getCache()->setMD5(e_LANGUAGE . USERCLASS_LIST)->retrieve('forum_perms')) { e107::getMessage()->addDebug("Using Permlist cache: True"); $this->permList = e107::unserialize($tmp); // print_a($this->permList); } else { e107::getMessage()->addDebug("Using Permlist cache: False"); $this->_getForumPermList(); $tmp = e107::serialize($this->permList, false); e107::getCache()->setMD5(e_LANGUAGE . USERCLASS_LIST)->set('forum_perms', $tmp); } unset($tmp); }
function UpdateContentPref($id) { global $qs, $plugintable, $sql, $tp; if (!is_object($sql)) { $sql = new db(); } //insert default preferences into core if ($id == "0") { $num_rows = $sql->db_Select("core", "*", "e107_name='{$plugintable}' "); if ($num_rows == 0) { $sql->db_Insert("core", "'{$plugintable}', '' "); } else { $row = $sql->db_Fetch(); } //prepare custom tags: use the posted value $cp = $_POST['content_custom_preset_key']; //insert category preferences into plugintable } else { //first get the existing prefs and parent $sql->db_Select($plugintable, "content_pref, content_parent", "content_id='" . intval($id) . "' "); $row = $sql->db_Fetch(); $current = e107::unserialize($row['content_pref']); //$current = $eArrayStorage->ReadxxxArray($row['content_pref']); $currentparent = $row['content_parent']; //if we are updating options if (isset($qs[0]) && $qs[0] == 'options') { //only use the manager prefs from the existing set foreach ($current as $k => $v) { if (strpos($k, "content_manager_") === 0 || strpos($k, "content_restrict_") === 0) { $content_pref[$k] = $tp->toDB($v); } } //prepare custom tags: use the posted values $cp = $_POST['content_custom_preset_key']; //if we are updating manager } elseif (isset($qs[0]) && ($qs[0] == 'manager' || $qs[0] == 'restrict')) { //if this is a top level category we need to keep all existing options if ($currentparent == '0') { $content_pref = $current; } //prepare custom tags: use the existing content_pref values $cp = $content_pref['content_custom_preset_key']; } } //parse custom tags and covert them in $_POST values ($cp is derived above) $string = array(); foreach ($cp as $ck => $cv) { if (!empty($cv)) { $string[] = $cv; } } if (is_array($string) && !empty($string[0])) { $_POST['content_custom_preset_key'] = $string; } //convert all $_POST to $content_pref for storage, and renew the existing stored prefs foreach ($_POST as $k => $v) { if (strpos($k, "content_") === 0) { $content_pref[$k] = $tp->toDB($v); } } //create new array of preferences $tmp = e107::serialize($content_pref, true); //$tmp = $eArrayStorage->WritexxxArray($content_pref); //update core table if ($id == "0") { $sql->db_Update("core", "e107_value = '{$tmp}' WHERE e107_name = '{$plugintable}' "); //update plugin table } else { $sql->db_Update($plugintable, "content_pref='{$tmp}' WHERE content_id='" . intval($id) . "' "); } return $content_pref; }
/** * Generate an array of mail recipient data which can be passed directly to the DB routines. * Only valid DB fields are copied * Combining/splitting of fields is done as necessary * (This is essentially the translation between internal storage format and db storage format. If * the DB format changes, only this routine and its counterpart should need changing) * * @param $data - array of email target-related data in internal format * @param $addMissing - if TRUE, undefined fields are added * * @return void */ public function targetToDb(&$data, $addMissing = FALSE) { // Direct correspondence at present (apart from needing to convert potential array $data['mail_target_info']) - but could change $res = array(); foreach ($this->dbTypes['mail_recipients'] as $f => $v) { if (isset($data[$f])) { $res[$f] = $data[$f]; } elseif ($addMissing) { $res[$f] = ''; } } if (isset($data['mail_target_info']) && is_array($data['mail_target_info'])) { $tmp = e107::serialize($data['mail_target_info'], TRUE); $res['mail_target_info'] = $tmp; } return $res; }
function readFeedList($force = FALSE) { $sql = e107::getDb(); if ($this->validFeedList && !$force) { return; // Already got list } if ($this->useCache) { $eArrayStorage = e107::getArrayStorage(); global $e107; if (!$force && ($temp = $e107->ecache->retrieve(NEWSFEED_LIST_CACHE_TAG))) { $this->feedList = e107::unserialize($temp); return; } } $fieldList = '*'; if ($this->useCache) { // Get all fields except the actual news $fieldList = 'newsfeed_id, newsfeed_name, newsfeed_url, newsfeed_timestamp, newsfeed_description, newsfeed_image, newsfeed_active, newsfeed_updateint'; } if ($sql->select("newsfeed", $fieldList, '`newsfeed_active` > 0')) { while ($row = $sql->fetch(MYSQL_ASSOC)) { $nfID = $row['newsfeed_id']; if (isset($row['newsfeed_data'])) { $this->newsList[$nfID]['newsfeed_data'] = $row['newsfeed_data']; // Pull out the actual news - might as well since we're here $this->newsList[$nfID]['newsfeed_timestamp'] = $row['newsfeed_timestamp']; unset($row['newsfeed_data']); // Don't keep this in memory twice! } $this->feedList[$nfID] = $row; // Put the rest into the feed data } $this->validFeedList = TRUE; } if ($this->useCache) { // Cache enabled - we need to save some updated info $temp = e107::serialize($this->feedList, FALSE); e107::getCache()->set(NEWSFEED_LIST_CACHE_TAG, $temp); } }
function menuSaveParameters() { $sql = e107::getDb(); $id = intval($_POST['menu_id']); if (isset($_POST['menu_parms'])) { $parms = $sql->escape(strip_tags($_POST['menu_parms'])); } else { unset($_POST['menu_id'], $_POST['mode'], $_POST['menuActivate'], $_POST['menuSetCustomPages']); $parms = $sql->escape(e107::serialize($_POST)); if (e_DEBUG == true) { // return array('msg'=>print_r($_POST,true),'error'=>true); } } $check = $sql->update("menus", "menu_parms='" . $parms . "' WHERE menu_id=" . $id . ""); if ($check) { return array('msg' => 'All Okay', 'error' => false); // FIXME - menu log //e107::getLog()->add('MENU_02',$_POST['menu_parms'].'[!br!]'.$parms.'[!br!]'.$this->menuId,E_LOG_INFORMATIVE,''); // $this->menuAddMessage(LAN_SAVED,E_MESSAGE_SUCCESS); } elseif (false === $check) { return array('msg' => LAN_UPDATED_FAILED, 'error' => true); } else { return array('msg' => 'No Changes Made', 'error' => false); // $this->menuAddMessage(LAN_NOCHANGE_NOTSAVED,E_MESSAGE_INFO); } }
function convert_serialized($serializedData, $type = '') { $arrayData = unserialize($serializedData); $data = e107::serialize($arrayData, FALSE); return $data; }
//update the inheritance of options if (isset($_POST['updateinherit'])) { foreach ($_POST['id'] as $k => $v) { //get current $sql->db_Select($plugintable, "content_pref", "content_id='" . intval($k) . "' "); $row = $sql->db_Fetch(); $content_pref = e107::unserialize($row['content_pref']); //$content_pref = $eArrayStorage->ReadxxxArray($row['content_pref']); //assign or remove inherit option if (isset($_POST['content_inherit']) && isset($_POST['content_inherit'][$k])) { $content_pref['content_inherit'] = "1"; } else { unset($content_pref['content_inherit']); } //update $tmp = e107::serialize($content_pref, true); //$tmp = $eArrayStorage->WritexxxArray($content_pref); $sql2->db_Update($plugintable, "content_pref='{$tmp}' WHERE content_id='" . intval($k) . "' "); } $message = CONTENT_ADMIN_CAT_LAN_22 . "<br /><br />"; $e107cache->clear($plugintable); } //update manager classes into preferences if (isset($_POST['update_manager'])) { $content_pref = $aa->UpdateContentPref($_POST['options_type']); $message = CONTENT_ADMIN_CAT_LAN_22 . "<br /><br />"; $e107cache->clear($plugintable); } //update page restriction classes into preferences if (isset($_POST['update_restrict'])) { $content_pref = $aa->UpdateContentPref($_POST['options_type']);