예제 #1
0
 public function createBlog($input)
 {
     return $this->createChannel($input, $this->getBlogChannel(), vB_Page::getBlogConversPageTemplate(), vB_Page::getBlogChannelPageTemplate(), vB_Api_UserGroup::CHANNEL_OWNER_SYSGROUPID);
 }
예제 #2
0
 /**
  * Returns the widget instances that are used for blog sidebar.
  * This method should be used only for owner configuration of the blog, not rendering
  *
  * @param  int Channel ID
  *
  * @return array An array of widget instances, keyed by widget instance ID
  *               <pre>
  *               array(
  *                   widget instance ID => array(
  *                       title
  *                       widgetid
  *                       widgetinstanceid
  *                       hidden (int flag)
  *                   )
  *               )
  *               </pre>
  */
 public function getBlogSidebarModules($channelId = 0)
 {
     $channelId = intval($channelId);
     $widgetApi = vB_Api::instance('widget');
     // We assume there's only one container in blog pagetemplate. If this is no longer the case, we may need to implement GUID for widgetinstances
     $blogTemplate = vB_Page::getBlogChannelPageTemplate();
     $modules = vB::getDbAssertor()->getRows('getBlogSidebarModules', array('blogPageTemplate' => $blogTemplate));
     $results = $parentConfig = $sortAgain = array();
     foreach ($modules as $module) {
         $title = $module['title'];
         //Temporarily removing the Blog Categories module as it is not implemented yet (VBV-4247)
         //@TODO: Remove this when this module gets implemented.
         //@TODO: It would be great if we have a way to globally disable any module and not display it anywhere to avoid this kind of fix.
         if ($module['guid'] == 'vbulletin-widget_blogcategories-4eb423cfd6dea7.34930850') {
             continue;
         }
         //END
         if (isset($module['adminconfig']) and !empty($module['adminconfig'])) {
             // search for custom title
             $adminConfig = @unserialize($module['adminconfig']);
             if (is_array($adminConfig)) {
                 foreach ($adminConfig as $key => $val) {
                     if (stripos($key, 'title') !== false) {
                         $title = $val;
                         break;
                     }
                 }
             }
         }
         if (!isset($parentConfig[$module['containerinstanceid']])) {
             $parentConfig[$module['containerinstanceid']] = $widgetApi->fetchConfig($module['containerinstanceid'], 0, $channelId);
             if (isset($parentConfig[$module['containerinstanceid']]['display_order'])) {
                 $sortAgain[] = $module['containerinstanceid'];
             }
         }
         if (isset($parentConfig[$module['containerinstanceid']]['display_modules']) and !empty($parentConfig[$module['containerinstanceid']]['display_modules'])) {
             $hidden = in_array($module['widgetinstanceid'], $parentConfig[$module['containerinstanceid']]['display_modules']) ? 0 : 1;
         } else {
             $hidden = 0;
         }
         $results[$module['widgetinstanceid']] = array('title' => $title, 'widgetid' => $module['widgetid'], 'widgetinstanceid' => $module['widgetinstanceid'], 'hidden' => $hidden);
     }
     if (!empty($sortAgain)) {
         $newOrder = array();
         foreach ($sortAgain as $parent) {
             if (is_array($parentConfig[$parent]['display_order'])) {
                 foreach ($parentConfig[$parent]['display_order'] as $widgetInstanceId) {
                     $newOrder[$widgetInstanceId] = $results[$widgetInstanceId];
                     unset($results[$widgetInstanceId]);
                 }
             }
             // append remaining items
             $newOrder += $results;
         }
         return $newOrder;
     } else {
         return $results;
     }
 }