Exemplo n.º 1
0
 /**
  * Retrieve singleton instance of storage object
  * @static
  * @param smdoc $foowd Reference to the foowd environment object.
  * @return Reference to singleton object
  */
 function &getInstance(&$foowd, $className, $classid, $objectid)
 {
     $foowd->track('smdoc_storage::getInstance', $className, $classid, $objectid);
     // Where conditions for the singleton namelookup object instance
     $where['classid'] = $classid;
     $where['objectid'] = $objectid;
     $where['version'] = 0;
     $where['workspaceid'] = 0;
     // get Object - use where clause, no special source, skip workspace check, skip version stuff
     $obj =& $foowd->getObj($where, NULL, FALSE, FALSE);
     // If object couldn't be found, build a new one
     if ($obj == NULL) {
         $obj = new $className($foowd);
         // If save failed, try retrieve again (maybe someone beat you to it..)
         if (!$obj->save()) {
             $obj =& $foowd->getObj($where, NULL, FALSE, FALSE);
             if ($obj == NULL) {
                 trigger_error('Unable to retrieve object from database: ' . $where['objectid'], E_USER_ERROR);
             }
         }
     }
     $foowd->track();
     return $obj;
 }
Exemplo n.º 2
0
 /**
  * Fetch the News
  *
  * @global array Specifies table information for news persistance.
  * @param smdoc $foowd Reference to the foowd environment object.
  * @param mixed newsArray Array containing news information (objectid).
  * @return retrieved news or FALSE on failure.
  */
 function &fetchNews(&$foowd, $newsArray = NULL)
 {
     global $NEWS_SOURCE;
     $foowd->track('smdoc_news::fetchNews', $newsArray);
     if (isset($newsArray['objectid'])) {
         $where['objectid'] = $newsArray['objectid'];
     } else {
         return FALSE;
     }
     $news =& $foowd->getObj($where, $NEWS_SOURCE, NULL, FALSE, FALSE);
     $foowd->track();
     return $news;
 }
 /**
  * Edit members of particular group
  *
  * Values set in template:
  *  + memberlist      - below
  *  + groupname       - name of group being modified
  *  + deleteForm      - Form for deleting members
  *
  * Sample contents of $t['memberlist']:
  * <pre>
  * array (
  *   0 => array ( 
  *          'title' => 'Username'
  *          'objectid' => 1287432
  *          'member_delete' => checkbox for deletion from group
  *        )
  * )
  * </pre>
  *
  * @static
  * @global array Specifies table information for user persistance.
  * @param smdoc $foowd Reference to the foowd environment object.
  * @param string className The name of the class.
  */
 function class_edit(&$foowd, $className)
 {
     $foowd->track('smdoc_group->class_edit');
     include_once INPUT_DIR . 'input.querystring.php';
     include_once INPUT_DIR . 'input.form.php';
     include_once INPUT_DIR . 'input.checkbox.php';
     $id_q = new input_querystring('id', REGEX_TITLE, NULL);
     if (empty($id_q->value)) {
         $_SESSION['error'] = OBJECT_NOT_FOUND;
         $foowd->loc_forward(getURI(NULL, FALSE));
         exit;
     }
     $group = $id_q->value;
     global $GROUP_USER_SOURCE;
     global $USER_SOURCE;
     /*
      * Set up combined source for JOIN query
      */
     $source['table'] = $USER_SOURCE['table'] . ', ' . $GROUP_USER_SOURCE['table'];
     $source['table_create'] = NULL;
     // Select objectid, and title from the user table
     $index[] = $USER_SOURCE['table'] . '.objectid AS objectid';
     $index[] = $USER_SOURCE['table'] . '.title AS title';
     // Select only those records that match the current group
     $where[$GROUP_USER_SOURCE['table'] . '.title'] = $group;
     // and that match object id's between the user table and the group table
     $where['match']['index'] = $GROUP_USER_SOURCE['table'] . '.objectid';
     $where['match']['op'] = '=';
     $where['match']['field'] = $USER_SOURCE['table'] . '.objectid';
     // order by user title
     $order = $USER_SOURCE['table'] . '.title';
     // Fetch users belonging to specified group, order by user name,
     // no limit, only fetch array, and don't bother with workspaces.
     $members =& $foowd->getObjList($index, $source, $where, $order, NULL, FALSE, FALSE);
     $deleteForm = new input_form('memberDeleteForm', NULL, SQ_POST, _("Delete Group Member"));
     if (!empty($members)) {
         foreach ($members as $idx => $userArray) {
             $deleteBox = new input_checkbox($userArray['objectid'], $deleteForm, FALSE, 'Delete');
             if ($deleteForm->submitted() && $deleteBox->checked) {
                 $foowd->groups->removeUser($userArray['objectid'], $group);
                 $user =& $foowd->getObj(array('objectid' => $userArray['objectid'], 'classid' => USER_CLASS_ID));
                 if ($user) {
                     $user->removeFromGroup($group);
                 }
                 unset($members[$idx]);
             } else {
                 // Add box to form and array
                 $deleteForm->addObject($deleteBox);
                 $members[$idx]['member_delete'] =& $deleteForm->objects[$userArray['objectid']];
             }
         }
     }
     $foowd->template->assign_by_ref('memberlist', $members);
     $foowd->template->assign_by_ref('deleteForm', $deleteForm);
     $foowd->template->assign('groupname', $foowd->groups->getDisplayName($group));
     $foowd->track();
 }
Exemplo n.º 4
0
 /**
  * Fetch Foowd User
  *
  * @global array Specifies table information for user persistance.
  * @param smdoc $foowd Reference to the foowd environment object.
  * @param mixed userArray Array containing user information (userid, password).
  * @return retrieved foowd user or FALSE on failure.
  */
 function &fetchUser(&$foowd, $userArray = NULL)
 {
     global $USER_SOURCE;
     $foowd->track('base_user::fetchUser', $userArray);
     if (isset($userArray['objectid'])) {
         $where['objectid'] = $userArray['objectid'];
     } elseif (isset($userArray['username'])) {
         $where['title'] = $userArray['username'];
     } else {
         return FALSE;
     }
     $user =& $foowd->getObj($where, $USER_SOURCE, NULL, FALSE, FALSE);
     $foowd->track();
     return $user;
 }