Beispiel #1
0
 /**
  * Fetches list of gadgets, installed/not installed, core/none core, has layout/has not, ...
  *
  * @access  public
  * @param   bool    $core_gadget accepts true/false/null
  * @param   bool    $installed   accepts true/false/null
  * @param   bool    $updated     accepts true/false/null
  * @param   bool    $has_html    accepts true/false/null
  * @return  array   List of gadgets
  */
 function GetGadgetsList($core_gadget = null, $installed = null, $updated = null, $has_html = null)
 {
     //TODO: implementing cache for this method
     static $gadgetsList;
     if (!isset($gadgetsList)) {
         $gadgetsList = array();
         $gDir = JAWS_PATH . 'gadgets' . DIRECTORY_SEPARATOR;
         if (!is_dir($gDir)) {
             Jaws_Error::Fatal('The gadgets directory does not exists!', __FILE__, __LINE__);
         }
         $installed_gadgets = $GLOBALS['app']->Registry->fetch('gadgets_installed_items');
         $installed_gadgets = array_filter(explode(',', $installed_gadgets));
         $disabled_gadgets = $GLOBALS['app']->Registry->fetch('gadgets_disabled_items');
         $gadgets = scandir($gDir);
         foreach ($gadgets as $gadget) {
             if ($gadget[0] == '.' || !is_dir($gDir . $gadget)) {
                 continue;
             }
             if (!$this->gadget->GetPermission(JAWS_SCRIPT == 'index' ? 'default' : 'default_admin', '', false, $gadget)) {
                 continue;
             }
             $objGadget = Jaws_Gadget::getInstance($gadget);
             if (Jaws_Error::IsError($objGadget)) {
                 continue;
             }
             $gInstalled = Jaws_Gadget::IsGadgetInstalled($gadget);
             if ($gInstalled) {
                 $gUpdated = Jaws_Gadget::IsGadgetUpdated($gadget);
             } else {
                 $gUpdated = true;
             }
             $index = urlencode($objGadget->title) . $gadget;
             $section = strtolower($objGadget->GetSection());
             switch ($section) {
                 case 'general':
                     $order = str_pad(array_search($gadget, $installed_gadgets), 2, '0', STR_PAD_LEFT);
                     $index = '0' . $section . $order . $index;
                     break;
                 case 'gadgets':
                     $index = '2' . $section . $index;
                     break;
                 default:
                     $index = '1' . $section . $index;
                     break;
             }
             $gadgetsList[$index] = array('section' => $section, 'name' => $gadget, 'title' => $objGadget->title, 'core_gadget' => $objGadget->_IsCore, 'description' => $objGadget->description, 'version' => $objGadget->version, 'installed' => (bool) $gInstalled, 'updated' => (bool) $gUpdated, 'disabled' => strpos($disabled_gadgets, ",{$gadget},") !== false, 'has_html' => $objGadget->default_action ? true : false);
         }
         ksort($gadgetsList);
     }
     $resList = array();
     foreach ($gadgetsList as $gadget) {
         if ((is_null($core_gadget) || $gadget['core_gadget'] == $core_gadget) && (is_null($installed) || $gadget['installed'] == $installed) && (is_null($updated) || $gadget['updated'] == $updated) && (is_null($has_html) || $gadget['has_html'] == $has_html)) {
             $resList[$gadget['name']] = $gadget;
         }
     }
     return $resList;
 }
Beispiel #2
0
 /**
  * Upgrades requested gadget
  *
  * @access  public
  * @param   string  $gadget  Gadget name
  * @return  void
  */
 function UpgradeGadget($gadget = '')
 {
     $redirect = false;
     $this->gadget->CheckPermission('ManageGadgets');
     if (empty($gadget)) {
         $redirect = true;
         $gadget = jaws()->request->fetch('comp', 'get');
     }
     if (!Jaws_Gadget::IsGadgetUpdated($gadget)) {
         $objGadget = Jaws_Gadget::getInstance($gadget);
         $installer = $objGadget->installer->load();
         $return = $installer->UpgradeGadget();
         if (Jaws_Error::IsError($return)) {
             $GLOBALS['app']->Session->PushLastResponse($return->GetMessage(), RESPONSE_ERROR);
         } else {
             $GLOBALS['app']->Session->PushLastResponse(_t('COMPONENTS_GADGETS_UPDATE_OK', $gadget), RESPONSE_NOTICE);
         }
     } else {
         $GLOBALS['app']->Session->PushLastResponse(_t('COMPONENTS_GADGETS_UPDATE_NO_NEED', $gadget), RESPONSE_ERROR);
     }
     if ($redirect) {
         Jaws_Header::Location(BASE_SCRIPT);
     }
 }
Beispiel #3
0
 /**
  * Put a gadget on the template
  *
  * @access  public
  * @param   string  $gadget  Gadget to put
  * @param   string  $action  Action to execute
  * @param   mixed   $params  Action's params
  */
 function PutGadget($gadget, $action, $params = null, $filename = '')
 {
     $output = '';
     $enabled = Jaws_Gadget::IsGadgetEnabled($gadget);
     if (Jaws_Error::isError($enabled) || $enabled != 'true') {
         $GLOBALS['log']->Log(JAWS_LOG_NOTICE, "Gadget {$gadget} is not enabled");
         return $output;
     }
     if (!Jaws_Gadget::IsGadgetUpdated($gadget)) {
         $GLOBALS['log']->Log(JAWS_LOG_NOTICE, 'Trying to populate ' . $gadget . ' in layout, but looks that it is not installed/upgraded');
         return $output;
     }
     jaws()->http_response_code(200);
     $goGadget = Jaws_Gadget::getInstance($gadget)->action->load($filename);
     if (!Jaws_Error::isError($goGadget)) {
         if (method_exists($goGadget, $action)) {
             $GLOBALS['app']->requestedGadget = $gadget;
             $GLOBALS['app']->requestedAction = $action;
             $GLOBALS['app']->requestedActionMode = ACTION_MODE_LAYOUT;
             if (is_null($params)) {
                 $output = $goGadget->{$action}();
             } else {
                 $output = call_user_func_array(array($goGadget, $action), $params);
             }
         } else {
             $GLOBALS['log']->Log(JAWS_LOG_ERROR, "Action {$action} in {$gadget}'s Actions dosn't exist.");
         }
     }
     if (Jaws_Error::isError($output)) {
         $GLOBALS['log']->Log(JAWS_LOG_ERROR, 'In ' . $gadget . '::' . $action . ',' . $output->GetMessage());
         $output = '';
     } elseif (jaws()->http_response_code() !== 200) {
         $output = '';
     }
     return $output;
 }
Beispiel #4
0
 /**
  * Get a list of URLs of a gadget
  *
  * @access  public
  * @return  array   URLs array on success or empty array on failure
  */
 function GetPublicURList()
 {
     @(list($request) = jaws()->request->fetchAll('post'));
     if ($request == 'url') {
         $urls[] = array('url' => '', 'title' => _t('MENU_REFERENCES_FREE_LINK'));
         $urls[] = array('url' => 'javascript:void(0);', 'title' => _t('MENU_REFERENCES_NO_LINK'));
         return $urls;
     } else {
         if (Jaws_Gadget::IsGadgetUpdated($request)) {
             $objGadget = Jaws_Gadget::getInstance($request);
             if (!Jaws_Error::IsError($objGadget)) {
                 $objHook = $objGadget->hook->load('Menu');
                 if (!Jaws_Error::IsError($objHook)) {
                     return $objHook->Execute();
                 }
             }
         }
     }
     return array();
 }