/**
  * Load all mailinglist
  *
  * @param sfWebRequest $request
  * @return <type>
  */
 public function executeLoadMailinglist(sfWebRequest $request) {
     $mailinglist = new Mailinglist();
     $data = MailinglistTemplateTable::instance()->getAllMailinglistTemplates(-1,-1);
     $json_result = $mailinglist->buildAllMailinglists($data);
     $this->renderText('({"result":'.json_encode($json_result).'})');
     return sfView::NONE;
 }
 /**
  *
  * @param Doctrine_Collection $data
  * @return array $data
  */
 public function buildHeadLine(Doctrine_Collection $data) {
     $result = array();
     $workflowtemplate = WorkflowTemplateTable::instance()->getWorkflowTemplateById($data[0]->getWorkflowtemplateId());
     $mailinglist = $workflowtemplate[0]->getMailinglistVersion()->toArray();
     $mailinglist = MailinglistTemplateTable::instance()->getMailinglistActiveById($mailinglist[0]['mailinglisttemplate_id'])->toArray();
     
     $workflowtemplate = $workflowtemplate->toArray();
     $user = UserLoginTable::instance()->findActiveUserById($workflowtemplate[0]['sender_id']);
     $userdata = $user[0]->getUserData();
     
     $result['workflow'] = $workflowtemplate[0]['name'];
     $result['versionid'] = $data[0]->getId();
     $result['mailinglist'] = $mailinglist[0]['name'];
     $result['mailinglist_id'] = $workflowtemplate[0]['id'];
     $result['workflowtemplateid'] = $data[0]->getWorkflowtemplateId();
     
     $textReplace = new ReplaceTags($data[0]->getId(), $data[0]->getContent(), $this->culture, $this->context);
     $newText = $textReplace->getText();
     $result['content'] = $newText;
     $result['created_at'] = format_date($data[0]->getCreatedAt(), 'g', $this->culture);
     $result['sender_id'] = $workflowtemplate[0]['sender_id'];
     $result['sender'] = $userdata->getFirstname() . ' ' . $userdata->getLastname() . ' <i>('.$user[0]->getUsername().')</i>';
     $result['version'] = $this->getVersion($data[0]->getWorkflowtemplateId());
     return $result;
 }
 /**
  * Function retuns flag if slot is send to all at once
  * @param int $versionid, version id
  * @return boolean
  */
 public function getSendToAllSlots($versionid) {
     $template = WorkflowTemplateTable::instance()->getWorkflowTemplateByVersionId($versionid)->toArray();
     $mailinglist = MailinglistTemplateTable::instance()->getMailinglistByVersionId($template[0]['mailinglisttemplateversion_id']);
     return $mailinglist[0]['MailinglistVersion']['sendtoallslotsatonce'];
 }
    public function buildData(Doctrine_Collection $data, $counter) {
        $result = array();
        $a = 0;
        $counter++;
        $authSettings = new CreateWorkflowAuthorizationRights();
        $authSettings->setDefaultRole();
        $authSettings->setUserRole($this->userId);
        $userSettings = $this->user->getAttribute('userSettings');
        foreach($data as $item) {
            $sender = UserLoginTable::instance()->findActiveUserById($item->getSenderId());
            $mailinglist = MailinglistTemplateTable::instance()->getMailinglistByVersionId($item->getMailinglisttemplateversionId());
            $inProgress = createDayOutOfDateSince($item->getVersioncreatedAt());
            $inProgress = addColor($inProgress, $userSettings['markred'],$userSettings['markorange'],$userSettings['markyellow']);
            $userdata = $sender[0]->getUserData()->toArray();
            $username = $sender[0]->getUsername() . ' (' . $userdata['firstname'] . ' ' . $userdata['lastname'] . ')';
            $result[$a]['#'] = $counter++;;
            $result[$a]['id'] = $item->getId();
            $result[$a]['mailinglisttemplate_id'] = $item->getMailinglisttemplateversionId();
            $result[$a]['mailinglisttemplate'] = $mailinglist[0]->getName();
            $result[$a]['sender_id'] = $item->getSenderId();
            $result[$a]['sendername'] = $username;
            
            $result[$a]['name'] = $item->getName();
            $result[$a]['isstopped'] = $item->getIsstopped();
            $result[$a]['process'] = $this->getProcess($item->getActiveversionId());
            $result[$a]['auth'] = $authSettings->getRights($item->getMailinglisttemplateversionId(), $item->getActiveversionId());
            if($item->getIscompleted() == 0 OR $item->getIscompleted() == '') {
                 $result[$a]['iscompleted'] = 0;
            }
            else {
                $result[$a]['iscompleted'] = 1;
                $result[$a]['process'] = '<div style="background-color:#00FF00; width:100px;">100 %'.'</div>';
            }

            $result[$a]['workflowisstarted'] = $item->getWorkflowisstarted();
            if($item->getIsstopped() == 1) {
                $result[$a]['currentstation'] = '<table><tr><td width="16"><img src="/images/icons/circ_stop.gif" /></td><td>'.$this->context->getI18N()->__('Workflow stopped' ,null,'workflowmanagement').'</td></tr></table>';
                $result[$a]['currentlyrunning'] = '-';
                $result[$a]['stationrunning'] = '-';
               // $result[$a]['process'] = '-';
            }
            elseif($item->getIscompleted() == 1) {
                $result[$a]['currentstation'] = '<table><tr><td width="16"><img src="/images/icons/circ_done.gif" /></td><td>'.$this->context->getI18N()->__('Workflow completed' ,null,'workflowmanagement').'</td></tr></table>';
                $result[$a]['currentlyrunning'] = '-';
                $result[$a]['stationrunning'] = '-';
            }
            elseif($item->getWorkflowisstarted() == 0) {
                $startdateofWorkflow = date('Y-m-d',$item->getStartworkflowAt());
                $startdateofWorkflow = format_date($startdateofWorkflow, 'p', $this->culture);
                $result[$a]['currentstation'] = '<table><tr><td width="16"><img src="/images/icons/circ_waiting.gif" /></td><td>'.$this->context->getI18N()->__('Startdate' ,null,'workflowmanagement').': '.$startdateofWorkflow.'</td></tr></table>';
                $result[$a]['currentlyrunning'] = '-';
                $result[$a]['stationrunning'] = '-';
            }
            else {
                $stationSettings =  $this->getCurrentStation($item->getActiveversionId(), $item->getSenderId());
                if(!empty($stationSettings)) {
                    $result[$a]['currentstation'] = $stationSettings[0];
                    $result[$a]['currentlyrunning'] = '<table><tr><td width="20">' . $inProgress . ' </td><td>' . $this->context->getI18N()->__('Day(s)' ,null,'workflowmanagement') . '</td></tr></table>';
                    $slotRunning = createDayOutOfDateSince($stationSettings[1]);
                    $slotRunning = addColor($slotRunning, $userSettings['markred'],$userSettings['markorange'],$userSettings['markyellow']);
                    $result[$a]['stationrunning'] = '<table><tr><td width="20">' . $slotRunning . ' </td><td>' . $this->context->getI18N()->__('Day(s)' ,null,'workflowmanagement') . '</td></tr></table>';
                }
                else {
                    $result[$a]['currentstation'] = '-';
                    $result[$a]['currentlyrunning'] = '-';
                    $result[$a]['stationrunning'] = '-';
                }
            }

            if($item->getIsarchived() == 1) {
                $result[$a]['currentstation'] = '<table><tr><td width="16"><img src="/images/icons/circ_archived.gif" /></td><td>'.$this->context->getI18N()->__('Workflow archived' ,null,'workflowmanagement').'</td></tr></table>';
                $result[$a]['currentlyrunning'] = '-';
                $result[$a]['stationrunning'] = '-';
            }


            $result[$a]['userdefined1'] = $this->getFields('userdefined1',$item->getActiveversionId());
            $result[$a]['userdefined2'] = $this->getFields('userdefined2',$item->getActiveversionId());

            $result[$a]['versioncreated_at'] = format_date($item->getVersioncreatedAt(), 'g', $this->culture);   
            $result[$a++]['activeversion_id'] = $item->getActiveversionId();
        }
        #print_r ($result);die;
        return $result;

    }
 /**
  * Adapt mailinglist to current version
  * @param sfWebRequest $request
  * @return <type>
  */
 public function executeAdaptMailinglist(sfWebRequest $request) {
     $mailinglist = new Mailinglist();
     $docuObj = new Documenttemplate();
     $mailinglistdata = MailinglistTemplateTable::instance()->getMailinglistByVersionTemplateId($request->getParameter('id'))->toArray();
     $currentdocumenttemplateversion = DocumenttemplateVersionTable::instance()->getActiveVersionById($mailinglistdata[0]['documenttemplatetemplate_id'])->toArray();
     $slots = $docuObj->buildSlots($currentdocumenttemplateversion[0]['id'], 'SLOTSONLY');
     $mailinglistversiondata = MailinglistVersionTable::instance()->getActiveVersionById($request->getParameter('id'))->toArray();
     MailinglistVersionTable::instance()->setMailinglistInactiveById($mailinglistversiondata[0]['mailinglisttemplate_id']);
     $mailinglistversion_id = $mailinglist->storeVersion($mailinglistversiondata[0]['mailinglisttemplate_id'],$mailinglistversiondata[0]['version']+1, $currentdocumenttemplateversion[0]['id']);
     $userdata = MailinglistAllowedSenderTable::instance()->getAllowedSenderById($mailinglistversiondata[0]['id']);
     $users = $mailinglist->buildAllowedUser($userdata);
     $mailinglist->saveUser($mailinglistversion_id, isset($users) ? $users: array());
     $authdata = MailinglistAuthorizationSettingTable::instance()->getAuthorizationById($mailinglistversiondata[0]['id'])->toArray();
     $mailinglist->adaptAuthorizationEntry($authdata, $mailinglistversion_id);
     $mailinglist->storeMailinglist($slots, $mailinglistversion_id);
     return sfView::NONE;
 }